package quarto;

/**
 * Bevat alle berichten die langs komen in de interfaces
 * @author Frank Borgonjen & Tim Smit
 */
public interface Message
{
    /**
     * ServerGUI berichten
     */
    
    /** server gui titel */
    public static final String SERVERGUI_TITLE = "ServerGUI";
    
    /** bevestiging voor het sluiten */
    public static final String SERVERGUI_CONFIRM_CLOSE_TITLE   = "Stoppen?";
    public static final String SERVERGUI_CONFIRM_CLOSE_MESSAGE = "Weet je zeker dat u de ServerGUI wilt afsluiten?";
    
    /** initialiseren */
    public static final String SERVERGUI_INIT = "Initialiseren...";
    
    /** vragen naar de poort */
    public static final String SERVERGUI_QUESTION_PORT_TITLE   = "Poort?";
    public static final String SERVERGUI_QUESTION_PORT_MESSAGE = "Op welke poort wil je je server starten?";
    
    /**
     * fout in de poort
     * @require 1x %s voor de foute poort
     */
    public static final String SERVERGUI_PORT_ERROR = "[ERROR] Het poort nummer '%s' is ongeldig.";
    
    /** de titel van een foutmelding */
    public static final String SERVERGUI_ERROR_TITLE = "Er is een fout opgetreden";
    
    
    /**
     * ClientGUI berichten
     */
    
    /** client gui titel */
    public static final String CLIENTGUI_TITLE = "ClientGUI";
    
    /** bevestiging voor het afsluiten */
    public static final String CLIENTGUI_CONFIRM_CLOSE_TITLE = "Stoppen?";
    public static final String CLIENTGUI_CONFIRM_CLOSE_MESSAGE = "Weet je zeker dat u de Client GUI wilt afsluiten?";
    
    /** bevestiging om opnieuw te spelen */
    public static final String CLIENTGUI_CONFIRM_RECONNECT_TITLE = "Opnieuw?";
    public static final String CLIENTGUI_CONFIRM_RECONNECT_MESSAGE = "Wilt u een nieuw spelletje starten";
    
    /**
     * verscheidene label op de gui
     */
    
    /** je eigen naam */
    public static final String CLIENTGUI_OWN_NAME = "Jouw naam";
    
    /** naam van de tegenstander */
    public static final String CLIENTGUI_OPPONENT_NAME = "Tegenstanders naam";
    
    /** je eigen te plaatsen stuk */
    public static final String CLIENTGUI_OWN_PIECE = "Jouw stuk";
    
    /** het stuk voor de tegenstander */
    public static final String CLIENTGUI_OPPONENT_PIECE = "Stuk voor de tegenstander";
    
    /** de sterkte van de computer */
    public static final String CLIENTGUI_AI_STRENGTH = "Computer sterkte";
    
    /**
     * Het menu in de GUI
     */
    
    /** toplevel menu met algemene opties */
    public static final String CLIENTGUI_MENU_FILE = "Bestand";
    
    /** het opnieuw verbinden */
    public static final String CLIENTGUI_MENU_FILE_RECONNECT = "Opnieuw verbinden";
    
    /** vragen naar nieuwe instellingen en verbinden */
    public static final String CLIENTGUI_MENU_FILE_ASK_CONNECT = "Instellingen wijzigen en opnieuw verbinden";
    
    /** afsluiten van de gui */
    public static final String CLIENTGUI_MENU_FILE_CLOSE = "Afsluiten";
    
    
    /** toplevel menu voor het wijzigen van de speler */
    public static final String CLIENTGUI_MENU_MODIFY_PLAYER = "Wijzig speler";
    
    
    /** toplevel menu voor de hints */
    public static final String CLIENTGUI_MENU_HINTS = "Hint van de ...";
    
    
    /** toplevel voor het hulpmenu */
    public static final String CLIENTGUI_MENU_HELP = "Help";
    
    /** uitleg van het spel */
    public static final String CLIENTGUI_MENU_HELP_EXPLAIN_GAME = "Uitleg";
    
    /** de uitleg zelf */
    public static final String CLIENTGUI_MENU_HELP_EXPLANATION =
        "Het spel wordt gespeeld met 16 stukken waarmee beide spelers mogen spelen.\n" +
        "Elk stuk heeft 4 eigenschappen: donker of licht, hol of vol, klein of groot, rond\n" +
        "of vierkant. Alle mogelijke combinaties van deze 4 eigenschappen komen éénmaal voor,\n" +
        "wat impliceert dat elk stuk verschillend is (bijvoorbeeld: slechts één stuk is donker,\n" +
        "hol, groot en vierkant.) Om de beurt plaatsen de spelers een stuk op het bord en het\n" +
        "doel is om 4 stukken met een gemeenschappelijke eigenschap op een rij te vormen\n" +
        "(bijvoorbeeld: vier \"ronde\" stukken).\n\n" +
        "Quarto is een spel dat zich onderscheidt door één uitzonderlijke regel, namelijk:\n" +
        "je mag niet zelf beslissen met welk stuk je speelt; dat doet je tegenspeler. Hij\n" +
        "geeft je een stuk en jij bepaalt vervolgens waar het op het bord komt te staan.\n" +
        "Je moet dus trachten een situatie te creëren, waarbij elk van de overblijvende\n" +
        "stukken een kenmerk heeft waarmee ergens op het bord 4 op een rij kan gevormd\n" +
        "worden. M.a.w. op dat moment heeft je tegenstander geen andere keuze dan je een\n" +
        "stuk te geven waarmee jij het spel kunt beëindigen. Je wordt verondersteld dan\n" +
        "\"Quarto\" te roepen.";
    
    /** de credits */
    public static final String CLIENTGUI_MENU_CREDITS = "Credits";
    
    /** de inhoud van de credits */
    public static final String CLIENTGUI_MENU_CREDITS_ITSELF =
        "<html>Makers:" +
        "<ul>" +
        "   <li>Frank Borgonjen</li>" +
        "   <li>Tim Smit</li>" +
        "</ul>" +
        "</html>";
    
    
    
    
    /** veranderen van strategie */
    public static final String CLIENTGUI_SWITCH_AI = "Strategie-switch";
    
    /**
     * vragen om locatie voor een stuk
     * @require 1x %s voor een stuk
     */
    public static final String CLIENTGUI_GET_LOCATION = "Kies een locatie voor '%s'.";
    
    /** vraag om een stuk voor de tegenstander */
    public static final String CLIENTGUI_GET_PIECE = "Kies een stuk voor de tegenstander";
    
    /** verbinden ... */
    public static final String CLIENTUI_CONNECTING = "Verbinden...";
    
    /** verbonden */
    public static final String CLIENTUI_CONNECTED = "Verbonden met de server!";
    
    /**
     * Foutmeldingen in de GUI
     */
    /** de titel van een foutmelding */
    public static final String CLIENTGUI_ERROR_TITLE = "Er is een fout opgetreden";
    
    /** foutmelding als er nog een spelletje bezig is */
    public static final String CLIENTGUI_ERROR_ACTIVE_GAME = "Er is nog een spelletje actief";
    
    /** als je niet aan de beurt bent */
    public static final String CLIENTGUI_ERROR_NOT_ON_TURN = "Je bent niet aan de beurt.";
    
    /** als je als computer speelt kun je niet zelf zetten doen */
    public static final String CLIENTGUI_ERROR_COMPUTER_PLAYS = "Dit is een computerspeler, dus je kunt niet zelf kiezen";
    
    /** als je moet wachten om een stuk te plaatsen */
    public static final String CLIENTGUI_ERROR_WAIT_LOCATION = "Je moet nog even wachten met het plaatsen van een stuk";
    
    /** ongeldig stuk */
    public static final String CLIENTGUI_ERROR_INVALID_PIECE = "Je hebt een ongeldig stuk gekozen";
    
    /** je bent nog niet aan de beurt om een stuk te kiezen */
    public static final String CLIENTGUI_ERROR_WAIT_PIECE = "Je mag nog geen stuk selecteren";
    
    
    
    /**
     * de Client- en ClientHandler berichten
     */
    
    /**
     * socketverbinding fout
     * @require 1x %s voor de host
     * @require 1x %s voor de poort
     */
    public static final String CLIENT_ERROR_CONNECTING = "Kan geen socketverbinding maken op host '%s' en poort %s.";
    
    /** poort buiten bereik */
    public static final String CLIENT_ERROR_OUT_OF_RANGE = "De opgegeven poort ligt buiten het bereik";
    
    /** de stream valt niet te initialiseren */
    public static final String CLIENT_ERROR_STREAM_INIT = "Kan de data streams niet initialiseren.";
    
    /** kan gegevens gebruiker niet ophalen */
    public static final String CLIENT_ERROR_FETCH_USER = "Kan gegevens niet ophalen van client";
    
    /** kan het bericht niet sturen naar de output stream */
    public static final String CLIENT_ERROR_SEND_OUTPUT = "[ERROR] Kan het bericht niet sturen naar de output stream";
    
    /** het commando kan niet verstuurt worden naar de clienthandler */
    public static final String CLIENT_ERROR_SEND_ERROR = "Kan het commando niet sturen naar de ClientHandler";
    
    /** bezig met sluiten van socket */
    public static final String CLIENT_CLOSING = "[Bezig met sluiten van socketverbinding...]";
    
    /** fout bij sluiten */
    public static final String CLIENT_ERROR_CLOSING = "[ERROR] Kan socketverbinding niet sluiten";
    
    /** gesloten */
    public static final String CLIENT_CLOSED = "[Socketverbinding gesloten]";
    
    
    
    /**
     * de player berichten
     */
    
    /** het spel start */ 
    public static final String PLAYER_STARTING = "Het spel begint!";
    
    /**
     * je eigen naam
     * @require 1x %s voor je naam
     */
    public static final String PLAYER_OWN_NAME = "Jouw naam is: %s";
    
    /**
     * de naam van de tegenstander
     * @require 1x %s voor de naam
     */
    public static final String PLAYER_OPPONENT_NAME = "Je speelt tegen: %s";
    
    /**
     * je kunt chatten met...
     * @require 1x %s voor de naam van de ander
     */
    public static final String PLAYER_CAN_CHAT = "En je kunt nog chatten met %s ook. Donders wat een geluk!";
    
    /**
     * ongeldige locatie opgegeven
     * @require 1x %s voor de locatie
     */
    public static final String PLAYER_ERROR_INVALID_LOCATION = "[ERROR] Je hebt geen geldige locatie opgegeven. (%s)";
    
    /**
     * het stuk is niet beschikbaar
     * @require 1x %s voor het stuk
     */
    public static final String PLAYER_ERROR_UNAVAILABLE_PIECE = "[ERROR] Dit stuk is niet meer beschikbaar. (%s)";
    
    /** Gewonnen */
    public static final String PLAYER_WIN = "GEWONNEN!!! PARTY!! GANZ PORNO!!";
    
    /** verloren */
    public static final String PLAYER_LOSE = "Hoe kun je nou verliezen, een schande is het...";
    
    /** remise */
    public static final String PLAYER_REMISE =
        "Het onmogelijke, hier in een - zo op het" +
        "oog - simpel potje quarto, gebeurt vandaag. Meld het de buren, er is een REMISE!!!";
    
    
    
    /**
     * de game berichten
     */
    
    /** je bent niet aan de beurt */
    public static final String GAME_ERROR_NOT_ON_TURN = "[ERROR] Je bent helemaal niet aan de beurt, jij stiekemerd!";
    
    /** ongeldige locatie */
    public static final String GAME_ERROR_INVALID_LOCATION = "[ERROR] Je hebt geen geldige locatie opgegeven";
    
    /**  niet beschikbaar stuk */
    public static final String GAME_ERROR_UNAVAILABLE_PIECE = "[ERROR] Het stuk is niet meer beschikbaar";
    
    /** server is gestopt */
    public static final String GAME_ERROR_SERVER_QUIT = "[ERROR] De server is gestopt";
    
    /**
     * bericht van server naar client
     * @require 1x %s voor clientnaam
     * @require 1x %s voor het bericht
     */
    public static final String GAME_SERVER_TO_CLIENT = "Server -> Client [%s]: %s";
    
    /**
     * bericht van client naar server
     * @require 1x %s voor naam client
     * @require 1x %s voor bericht
     */
    public static final String GAME_CLIENT_TO_SERVER = "Client [%s] -> Server: %s";
    
    /**
     * chat formaat met naam en bericht
     * @require 1x %s voor naam
     * @require 1x %s voor het bericht
     */
    public static final String GAME_CHAT = "%s> %s";
    
    /**
     * speler verlaat het spel
     * @require 1x %s voor de naam van de speler
     */
    public static final String ELVIS_HAS_LEFT_THE_BUILDING = "[%s is vertrokken]";
    
    
    
    /**
     * de Server berichten
     */
    
    /**
     * luisteren op host en poort
     * @require 1x %s voor de host
     * @require 1x %s voor de poort
     */
    public static final String SERVER_NOTICE_LISTENING = "Server luistert op host '%s' naar poort %s";
    
    /**
     * Poort al in gebruik
     * @require 1x %s voor de poort
     */
    public static final String SERVER_ERROR_PORT_IN_USE =
        "Fout bij het maken van een socket verbinding: "+
       "poort '%s' is al in gebruik.";
    
    /** fout bij maken socket verbinding */
    public static final String SERVER_ERROR_SOCKET = "Fout bij het maken van een socket verbinding";
    
    /**
     * speler komt de server binnen
     * @require 1x %s voor de naam
     */
    public static final String SERVER_PLAYER_CONNECTED = "[%s is verbonden]";
    
    /**
     * spel gestart tussen twee spelers
     * @require 1x %s voor de eerste naam
     * @require 1x %s voor de tweede naam
     */
    public static final String SERVER_GAME_STARTED = "Spel begonnen tussen %s en %s.";
    
    
    
    /**
     * de ClientConnectionDialog berichten
     */
    
    /** de titel */
    public static final String DIALOG_TITLE = "Connectie instellingen";
    
    /**
     * verscheidene labels en standaard waarden
     */
    
    /** soort speler */
    public static final String DIALOG_KIND_OF_PLAYER = "Soort speler";
    
    /** de gekozen strategie voor de computer speler */
    public static final String DIALOG_STRATEGY = "Strategie";
    
    /** naam */
    public static final String DIALOG_NAME = "Gebruikersnaam";
    public static final String DIALOG_NAME_VALUE = "Turnek";
    
    /** poort nummer */
    public static final String DIALOG_PORT = "Poortnummer";
    public static final String DIALOG_PORT_VALUE = "2727";
    
    /** server adres */
    public static final String DIALOG_HOST = "Hostadres";
    
    /** de verbind knop */
    public static final String DIALOG_CONNECT = "Verbinden";
    
    /** foutmelding */
    public static final String DIALOG_ERROR = "<html><font color=\"red\">&nbsp;&nbsp;&nbsp;Fout!</font></html>";
    
    
    
    /**
     * de ClientTUI berichten
     */
    
    /** naam vragen */
    public static final String CLIENTTUI_QUESTION_NAME = "Wat is je naam";
    
    /** soort speler */
    public static final String CLIENTTUI_QUESTION_KIND_OF_PLAYER = "Wat voor speler";
    
    /** strategie vragen */
    public static final String CLIENTTUI_QUESTION_STRATEGY = "Wat voor strategie";
    
    /** hostadres vragen */
    public static final String CLIENTTUI_QUESTION_HOST = "Op welk hostadres wil je verbinden";
    
    /** poortnummer vragen */
    public static final String CLIENTTUI_QUESTION_PORT = "Op welk poortnummer wil je verbinden";
    
    /** vragen om opnieuw te verbinden */
    public static final String CLIENTTUI_QUESTION_RECONNECT = "Wil je opnieuw verbinden met de server";
    
    /**
     * naar locatie van gegeven stuk
     * @require 1x %s voor stuk
     */
    public static final String CLIENTTUI_QUESTION_LOCATION = "Kies een locatie voor %s. (0 t/m 15) ";
    
    /** vragen naar een stuk voor de tegenstander */
    public static final String CLIENTTUI_QUESTION_PIECE = "Kies een stuk voor de andere speler op te plaatsen (0 t/m 15) ";
    
    
    
    /**
     * de ServerTUI berichten
     */
    
    /** vragen naar poortnummer */
    public static final String SERVERTUI_QUESTION_PORT = "Op welk poortnummer wil je de server opstarten";
    
    
    
    
    /**
     * Globale foutmeldingen
     */
        
    /**
     * bij een ongeldige host
     * @require 1x %s voor de host
     */
    public static final String ERROR_INVALID_HOST = "De host '%s' is ongeldig.";
    
    /**
     * bij een ongeldige poort
     * @require 1x %s de poort
     */
    public static final String ERROR_INVALID_PORT = "Het poortnummer '%s' is ongeldig.";
    
    /**
     * fout commando
     * @require 1x %s voor het commando
     */
    public static final String ERROR_INVALID_COMMAND = "[ERROR] Het commando '%s' is niet geldig";
}
